﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MJM.SUD.EntidadesNegocio;
using MJM.SUD.ComponentesNegocio;
using MJM.RPP.EntidadesNegocio;
using MJM.RPP.ComponentesNegocio;

namespace wRegPadron.Formularios
{
    public partial class Empresas : System.Web.UI.Page
    {
        public AudiService.wsAud_Acc servicio = new AudiService.wsAud_Acc();
        private String ObtieneIP()
        {
            string ipusuario = System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"];
            if (ipusuario == null)
                ipusuario = "";
            return ipusuario;
        }

        private void CargarAutocompletar(TextBox txt, string[] array)
        {
            string param = "[";
            for (int i = 0; i < array.Count(); i++)
            {
                param = param + '"' + array[i] + '"';
                if (i < array.Count() - 1)
                    param = param + ",";
            }
            param = param + "]";
            txt.Attributes.Add("data-source", param);
            txt.Attributes.Add("data-provide", "typeahead");
            txt.Attributes.Add("data-items", "8");
        }

        private void CargarListaConvenios()
        {
            var obj = new ConvenioEN();
            obj.Eliminado = 1;
            obj.IdTipoConvenio = 1;
            obj.IdEmpresa = 0;
            obj.RUC = "";
            obj.NombreComercio = "";
            rComercios.DataSource = ConvenioCN.Listar(obj);
            rComercios.DataBind();
        }

        protected void LimpiarCamposRegistro()
        {
            txtWeb.Text = "";
            txtTelefono.Text = "";
            ddlRubro.SelectedIndex = 0;
            txtNumContacto.Text = "";
            txtNombreContacto.Text = "";
            txtLugar.Text = "";
            txtEstablecimiento.Text = "";
            txtEmail.Text = "";
            txtDirección.Text = "";
            txtRUC.Text = "";
            txtLicencia.Text = "";
            txtExpediente.Text = "";
            txtAnioExpediente.Text = "";
            txtAnioLicencia.Text = "";

        }

        protected void LimpiarDatosConvenio()
        {
            txtConvenio.Text = "";
            txtBusqRuc.Text = "";
            lblComercioSeleccionado.Text = "";
            InicioConvenio.Clear();
            FinConvenio.Clear();
        }

        protected void LimpiarCamposPromocion()
        {
            txtDescripcion.Text = "";
            txtRestriccion.Text = "";
            bdpInicio.Clear();
            bdpFin.Clear();

        }

        protected void LimpiarCamposRegistroPromocion()
        {
            txtDescripcion.Text = "";
            txtRestriccion.Text = "";
            bdpInicio.SelectedDate = DateTime.Now;
            bdpFin.SelectedDate = DateTime.Now;
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    string pass = Request.QueryString["pass"].ToString();
                    string usuario = Request.QueryString["user"].ToString();
                    ddlRubro.DataSource = ComercioCN.ListarRubros();
                    ddlRubro.DataTextField = "Area";
                    ddlRubro.DataValueField = "Codigo";
                    ddlRubro.DataBind();
                    UbicacionCN objUbicacionCN = new UbicacionCN();
                    pRegistroComercio.Visible = false;
                    pDatosConvenio.Visible = true;
                    CargarAutocompletar(txtVias, ComercioCN.ListarVias().ToArray());
                    CargarAutocompletar(txtLugar, objUbicacionCN.ListarDistritos("").ToArray());
                    servicio.Inser_Acc("usuario", "Gestión", "Registro de convenios", "Ingreso", "", 1, "", ObtieneIP());
                    lblTitulo.Text = "Registro de convenios vecino puntual";
                    lblDescripcion.Text = "Por medio de este formulario podrá registrar los convenios del programa de vecino puntual";
                    hfIdConvenioSeleccionado.Value = "0";
                    hfIdViaSeleccionada.Value = "0";
                    /*
                    rLugares.DataSource = objUbicacionCN.ListarFiltro(txtLugar.Text);
                    rLugares.DataBind();
                    rComercios.DataSource = ComercioCN.ListarComercios();
                    rComercios.DataBind();
                     */
                    CargarListaConvenios();
                }
                catch (Exception ex)
                {
                    Response.Redirect("http://gestion.munijesusmaria.gob.pe/appweb/wperspad/Login.aspx");
                }
            }
        }

        protected void rLugares_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Seleccionar")
            {
                txtLugar.Text = ((Label)e.Item.FindControl("lblLugar")).Text;
                //PopupControlExtender1.Cancel();
            }
        }

        protected void btnBuscarLugar_Click(object sender, EventArgs e)
        {
            UbicacionCN objUbicacionCN = new UbicacionCN();/*
            rLugares.DataSource = objUbicacionCN.ListarFiltro(txtLugar.Text);
            rLugares.DataBind();*/
            txtLugar.Focus();
        }

        protected void btnGuardar_Click(object sender, EventArgs e)
        {
            var obj = new ComercioEN();
            obj.Contacto = txtNombreContacto.Text;
            obj.Direccion = txtDirección.Text;
            obj.Distrito = txtLugar.Text;
            obj.Mail = txtEmail.Text;
            obj.Nombre = txtEstablecimiento.Text;
            obj.IdRubro = Convert.ToInt32(ddlRubro.SelectedItem.Value);
            //obj.Rubro = txtRubro.Text;
            obj.NroContacto = txtNumContacto.Text;
            obj.Telefono = txtTelefono.Text;
            obj.Web = txtWeb.Text;
            obj.Expediente = txtExpediente.Text;
            obj.Licencia = txtLicencia.Text;
            obj.AnioLicencia = txtAnioLicencia.Text;
            obj.AnioExpediente = txtAnioExpediente.Text;
            obj.RUC = txtRUC.Text;
            obj.CodigoDireccion = Convert.ToInt32(hfIdViaSeleccionada.Value);
            if (fuLogoArchivo.PostedFile != null)
            {
                obj.NombreArchivo = fuLogoArchivo.FileName;
                obj.LogoComercio = fuLogoArchivo.FileBytes;
            }
            else
            {
                obj.NombreArchivo = "";
                obj.LogoComercio = new byte[0];
            }
            int resultado = ComercioCN.Insertar(obj);
            if (resultado > 0)
            {

                pDatosConvenio.Visible = true;
                pRegistroComercio.Visible = false;
                hfIdComercioSeleccionado.Value = resultado.ToString();
                lblComercioSeleccionado.Text = "El comercio seleccionado es: " + txtEstablecimiento.Text;
                LimpiarCamposRegistro();
                /*
                rComercios.DataSource = ComercioCN.ListarComercios();
                rComercios.DataBind();*/
                string usuario = Request.QueryString["user"].ToString();
                servicio.Inser_Acc(usuario, "Gestión", "Registro de convenios", "Registro del comercio", obj.Nombre + " / " + obj.Mail + " / " + obj.Direccion, 1, "", ObtieneIP());
            }
        }

        protected void rComercios_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            hfIdConvenioSeleccionado.Value = ((HiddenField)e.Item.FindControl("hfIdComercio")).Value;
            hfIdComercioSeleccionado.Value = ((HiddenField)e.Item.FindControl("hfIdEmpresa")).Value;
            if (e.CommandName == "Seleccionar")
            {
                int idComercio = Convert.ToInt32(hfIdComercioSeleccionado.Value);
                ComercioEN obj = ComercioCN.ObtenerID(idComercio);
                lblContacto.Text = obj.Contacto;
                lblCorreoComercio.Text = obj.Mail;
                lblTeleContacto.Text = obj.Telefono;
                rPromociones.DataSource = PromocionCN.ListarPromocion(Convert.ToInt32(hfIdConvenioSeleccionado.Value));
                rPromociones.DataBind();
                ModalPopupExtender3.Show();
            }
            if (e.CommandName == "Promocion")
            {
                ModalPopupExtender2.Show();
            }
            if (e.CommandName == "Eliminar")
            {
                ModalPopupExtender1.Show();
            }
        }

        protected void btnSi_Click(object sender, EventArgs e)
        {
            int value = ConvenioCN.Eliminar(Convert.ToInt32(hfIdConvenioSeleccionado.Value));
            if (value == 1)
            {
                var obj = new ConvenioEN();
                obj.Eliminado = 1;
                obj.IdTipoConvenio = 1;
                obj.IdEmpresa = 0;
                obj.NombreComercio = "";
                rComercios.DataSource = ConvenioCN.Listar(obj);
                rComercios.DataBind();
                string usuario = Request.QueryString["user"].ToString();
                servicio.Inser_Acc(usuario, "Gestión", "Registro de convenios", "Eliminación de convenio", "Se ha eliminado el convenio " + value.ToString(), 1, "", ObtieneIP());
            }
        }

        protected void btnGuardarPromocion_Click(object sender, EventArgs e)
        {
            PromocionEN objPromocionEN = new PromocionEN();
            objPromocionEN.Promocion = txtDescripcion.Text;
            objPromocionEN.Restriccion = txtRestriccion.Text;
            objPromocionEN.FechaInicio = bdpInicio.SelectedDate.Year.ToString() + (bdpInicio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpInicio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            objPromocionEN.FechaFin = bdpFin.SelectedDate.Year.ToString() + (bdpFin.SelectedDate.Month + 100).ToString().Substring(1, 2) + (bdpFin.SelectedDate.Day + 100).ToString().Substring(1, 2);
            objPromocionEN.IdComercio = Convert.ToInt32(hfIdConvenioSeleccionado.Value);

            if (fuLogo.PostedFile != null)
            {
                objPromocionEN.Logo = fuLogo.FileBytes;
                objPromocionEN.NombreLogo = fuLogo.PostedFile.FileName;
            }
            else
            {
                objPromocionEN.Logo = new byte[0];
                objPromocionEN.NombreLogo = "";
            }
            int result = PromocionCN.Insertar(objPromocionEN);
            if (result > 0)
            {
                LimpiarCamposRegistroPromocion();
                string usuario = Request.QueryString["user"].ToString();
                servicio.Inser_Acc(usuario, "Gestión", "Registro de convenios", "Registro de promoción", objPromocionEN.Promocion + " / " + objPromocionEN.Restriccion + " / " + objPromocionEN.FechaInicio + "-" + objPromocionEN.FechaFin, 1, "", ObtieneIP());
                ModalPopupExtender2.Hide();
            }
        }

        protected void rPromociones_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            if (e.CommandName == "Eliminar")
            {
                int value = PromocionCN.Eliminar(Convert.ToInt32(((HiddenField)e.Item.FindControl("hfIdPromocion")).Value));
                if (value > 0)
                {
                    int idComercio = Convert.ToInt32(hfIdConvenioSeleccionado.Value);
                    rPromociones.DataSource = PromocionCN.ListarPromocion(idComercio);
                    rPromociones.DataBind();
                    string usuario = Request.QueryString["user"].ToString();
                    servicio.Inser_Acc(usuario, "Gestión", "Registro de convenios", "Eliminar promoción", "Promoción eliminada " + value.ToString(), 1, "", ObtieneIP());
                    ModalPopupExtender3.Show();
                }
            }
        }

        protected void rbDistrito_CheckedChanged(object sender, EventArgs e)
        {
            if (rbDistrito.Checked)
            {
                ModalPopupExtender4.Show();
            }
        }

        protected void btnBuscarVias_Click(object sender, EventArgs e)
        {
            UbicacionCN objCN = new UbicacionCN();
            string paridad = "";
            if (rbPar.Checked)
                paridad = "p";
            else
                paridad = "i";
            lbViasFiltradas.DataSource = objCN.ListarVias(txtVias.Text, paridad);
            lbViasFiltradas.DataTextField = "Descripcion";
            lbViasFiltradas.DataValueField = "IDUbicacion";
            lbViasFiltradas.DataBind();
            ModalPopupExtender4.Show();
        }

        protected void btnCancelarDireccion_Click(object sender, EventArgs e)
        {
            ModalPopupExtender4.Hide();
            rbDistrito.Checked = false;
        }

        protected void btnSeleccionarVia_Click(object sender, EventArgs e)
        {
            txtDirección.Text = lbViasFiltradas.SelectedItem.Text.TrimEnd() + " nro, lote, mzna: " + txtNroLocal.Text;
            txtLugar.Text = "lima-lima-Jesús María";
            hfIdViaSeleccionada.Value = lbViasFiltradas.SelectedValue;
        }

        protected void btnBusquedaRUC_Click(object sender, EventArgs e)
        {
            ComercioEN obj = ComercioCN.ObtenerRuc(txtBusqRuc.Text);
            if (obj != null)
            {
                hfIdComercioSeleccionado.Value = obj.Codigo.ToString();
                lblComercioSeleccionado.Text = "El comercio seleccionado es: " + obj.Nombre;
            }
            else
            {
                ModalPopupExtender5.Show();
                txtRUC.Text = txtBusqRuc.Text;
            }
        }

        protected void btnSiRegistro_Click(object sender, EventArgs e)
        {
            pDatosConvenio.Visible = false;
            pRegistroComercio.Visible = true;
        }

        protected void btnNoregistro_Click(object sender, EventArgs e)
        {
            pDatosConvenio.Visible = true;
            pRegistroComercio.Visible = false;
        }

        protected void btnCancelarRegistro_Click(object sender, EventArgs e)
        {
            pDatosConvenio.Visible = true;
            pRegistroComercio.Visible = false;
        }

        protected void btnGuardarConvenio_Click(object sender, EventArgs e)
        {
            ConvenioEN objConvenio = new ConvenioEN();
            objConvenio.FechaInicio = InicioConvenio.SelectedDate.Year.ToString() + (InicioConvenio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (InicioConvenio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            objConvenio.FechaFin = FinConvenio.SelectedDate.Year.ToString() + (FinConvenio.SelectedDate.Month + 100).ToString().Substring(1, 2) + (FinConvenio.SelectedDate.Day + 100).ToString().Substring(1, 2);
            objConvenio.IdEmpresa = Convert.ToInt32(hfIdComercioSeleccionado.Value);
            objConvenio.IdTipoConvenio = 1;
            objConvenio.NumeroConvenio = txtConvenio.Text;
            int result = ConvenioCN.Insertar(objConvenio);
            if (result > 0)
            {
                LimpiarDatosConvenio();
                lblErrorGuardar.Text = "";
                CargarListaConvenios();
                string usuario = Request.QueryString["user"].ToString();
                servicio.Inser_Acc(usuario, "Gestión", "Registro de convenios", "Registro de convenio vecino puntual", objConvenio.NumeroConvenio + " / " + objConvenio.FechaInicio + " / " + objConvenio.FechaFin + " / " + objConvenio.IdEmpresa.ToString(), 1, "", ObtieneIP());
            }
            else
            {
                lblErrorGuardar.Text = "No se pudo registrar el convenio. Intentelo nuevamente.";
            }
        }

        protected void btnFiltrar_Click(object sender, EventArgs e)
        {
            var obj = new ConvenioEN();
            obj.Eliminado = 1;
            obj.IdTipoConvenio = 1;
            obj.IdEmpresa = 0;
            obj.RUC = txtRUCFiltro.Text;
            obj.NombreComercio = txtComercio.Text;
            rComercios.DataSource = ConvenioCN.Listar(obj);
            rComercios.DataBind();
        }
    }
}